package org.dromara.bykt.domain.vo;

import org.dromara.bykt.domain.BYKTCourse;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;


/**
 * 课程视图对象 course
 *
 * @author Hou
 * @date 2025-06-22
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BYKTCourse.class)
public class BYKTCourseVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 课程ID
     */
    @ExcelProperty(value = "课程ID")
    private Long id;

    /**
     * 课程标题
     */
    @ExcelProperty(value = "课程标题")
    private String title;

    /**
     * 封面图片
     */
    @ExcelProperty(value = "封面图片")
    private String coverImg;

    /**
     * 课程简介
     */
    @ExcelProperty(value = "课程简介")
    private String intro;

    /**
     * 价格
     */
    @ExcelProperty(value = "价格")
    private Long price;

    /**
     * 原价
     */
    @ExcelProperty(value = "原价")
    private Long originalPrice;

    /**
     * 分类ID
     */
    @ExcelProperty(value = "分类ID")
    private Long categoryId;

    /**
     * 讲师姓名
     */
    @ExcelProperty(value = "讲师姓名")
    private String teacherName;

    /**
     * 难度级别（1初级 2中级 3高级）
     */
    @ExcelProperty(value = "难度级别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=初级,2=中级,3=高级")
    private String level;

    /**
     * 学习人数
     */
    @ExcelProperty(value = "学习人数")
    private Long studyCount;

    /**
     * 状态（0上架 1下架）
     */
    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=上架,1=下架")
    private String status;

    /**
     * 排序号
     */
    @ExcelProperty(value = "排序号")
    private Long sort;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;


    private Boolean expanded;

    private Integer type;

    private List<BYKTCourseChapterListVO> chapterList;

    private String name;
}
